
/*
*Released on 28th June 2008.
*Any violations can be reported at paritosh@wikiocean.net
*What is treated as violations can be found at www.wikiocean.net/ppl1-voilations*
******************************************************************************
* The contents of this file are subject to POOL Public License 1.0 and later.
* POOL Public License is based on Affero GPL v3 and additional conditions.
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the Affero GPL v3 License at http://www.gnu.org/licenses/agpl.html
* You may obtain a copy of the POOL Public License 1.0 or later at www.wikiocean.net/license/ppl.html
* Software distributed under POOL Public License 1.0 is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Initial Developer of the Original Code is Paritosh Pungaliya (C) 2008. All Rights Reserved.
******************************************************************************
* Objective of the additional terms (license)
* 1) Is to extend the software freedom to freedom to work.
* 2) To ensure that knowledge is free from monopoly of agencies.
* 3) To avoid a situation where big corporate or investor can buy out free software groups and companies and then start milking the communities built around it.
* (this trend can be seen how the freedom is curtailed in companies that get Venture Capital funding.)
******************************************************************************
*/

package  file;

import java.io.RandomAccessFile;

import logger.PoolLogger;
import dbmanager.DBManager;
import utility.Input;

public class FileUtility
{
	RandomAccessFile raf;
	PoolLogger pl;
	
	public FileUtility(RandomAccessFile raf)
	{
		this.raf = raf;
		
		// logger
		pl = (PoolLogger) PoolLogger.getLogger(this.getClass().getName());
	}
	
	public int getColumnIndex(String columnName)
	{
		long temp=0;
		try
		{
			temp = raf.getFilePointer(); 
			raf.seek(0);
			String xyz=raf.readLine();
			//System.out.println("The Column Herder is : " +xyz);
			System.out.println("The Column for Search is : " +columnName);
			pl.info("The Column for Search is : " +columnName);
			pl.debug("The Column for Search is : " +columnName);
			pl.warn("The Column for Search is : " +columnName);
			pl.fatal("The Column for Search is : " +columnName);
			pl.error("The Column for Search is : " +columnName);
			pl.trace("The Column for Search is : " +columnName);
			
			String[]arr1=xyz.split(Input.SEPARATOR);
			for(int i=0;i<arr1.length;i++)
			{
				if(arr1[i].toLowerCase().equals(columnName.toLowerCase()))
				{
					raf.seek(temp);
					return(i+1);
				}
			}
			raf.seek(temp);
			return(0);
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		return 0;
		
	}
	public String getColumnName(int columnIndex)
	{
		try
		{
			long temp = raf.getFilePointer(); 
			raf.seek(0);
			
			String xyz=raf.readLine();
			String[]arr1=xyz.split("\t");
			
			if (columnIndex < arr1.length+1 && columnIndex>0){
				System.out.println("Column Name of : "+columnIndex+" is : "+arr1[columnIndex-1]);
				pl.info("Column Name of : "+columnIndex+" is : "+arr1[columnIndex-1]);
				pl.debug("Column Name of : "+columnIndex+" is : "+arr1[columnIndex-1]);
				pl.warn("Column Name of : "+columnIndex+" is : "+arr1[columnIndex-1]);
				pl.fatal("Column Name of : "+columnIndex+" is : "+arr1[columnIndex-1]);
				pl.error("Column Name of : "+columnIndex+" is : "+arr1[columnIndex-1]);
				pl.trace("Column Name of : "+columnIndex+" is : "+arr1[columnIndex-1]);
				
				raf.seek(temp);
				return(arr1[columnIndex-1]);
			}
			else
			{
				System.out.println("There is no column of given index.");
				pl.info("There is no column of given index.");
				pl.debug("There is no column of given index.");
				pl.warn("There is no column of given index.");
				pl.fatal("There is no column of given index.");
				pl.error("There is no column of given index.");
				pl.trace("There is no column of given index.");
				
				raf.seek(temp);
				return ("error");
			}
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		return null;
	}
	String[] sortArrayIndex(String[] arrayForSort) 
	{
			for(int j=0;j<arrayForSort.length;j++)
			{
				int i = getColumnIndex(arrayForSort[j])-1;
				{
					String temp = arrayForSort[i];
					arrayForSort[i] = arrayForSort[j];
					arrayForSort[j] = temp;
				}
		}
		for(int i=0;i<arrayForSort.length;i++)
		{
			System.out.println(arrayForSort[i]);
			pl.info(arrayForSort[i]);
			pl.debug(arrayForSort[i]);
			pl.warn(arrayForSort[i]);
			pl.fatal(arrayForSort[i]);
			pl.error(arrayForSort[i]);
			pl.trace(arrayForSort[i]);
		}
		return arrayForSort;
	}
	
	
	
}